/*
 * appRtc.h
 *
 *  Created on: 2018年1月2日
 *      Author: Administrator
 */

#ifndef APP_APPRTC_H_
#define APP_APPRTC_H_

#include "gd32e230.h"
#include "UserConfig.h"


#define rtcDebug    myPrintf
//#define rtcDebug(...)

/* TI-RTOS Task configuration */
#define RTC_TASK_STACK_SIZE 1024
#define RTC_TASK_PRIORITY   1

#define DAY_SEC         ((uint32_t)86400)       //(24*60*60)        /* 一天有多少秒 */
#define FOUR_YEAR_SEC   ((uint32_t)126230400)    //((365*3+366)*24*60*60)    /* 一个周期(4年)有多少秒,按365天计算 */
#define EASTERN_8TH     ((uint32_t)28800)  //(8*60*60)     /* 东部时差 */
#define BASE_YEAR       ((uint16_t)1970)   /* 时间基数 */
#define START_NTP_TIM   ((uint32_t)1577808000)  /* 2020/01/01 0:0:0 时间戳,当前时间戳可以在这里查询 http://tool.chinaz.com/Tools/unixtime.aspx*/

typedef struct
{
    uint16_t usYear;
    uint8_t ucMonth;
    uint8_t ucDay;
    uint8_t ucHour;
    uint8_t ucMinute;
    uint8_t ucSecond;
    uint8_t ucWeek;
}tsTime;

/*-----------------------*/
#define Monday                  (1<<0)  /* 星期一 */
#define Tuesday                 (1<<1)  /* 星期二 */
#define Wednesday               (1<<2)  /* 星期三 */
#define Thursday                (1<<3)  /* 星期四 */
#define Friday                  (1<<4)  /* 星期五 */
#define Saturday                (1<<5)  /* 星期六 */
#define SUNDAY                  (1<<6)  /* 星期日 */


#define TIMING_STRUCT_SIZE
#define TIMING_MAX_NVS_DATA_SIZE    16
#define TIMING_MAX_NUM              12
#define TIMING_STRUCT_HEAD_SIZE     (sizeof(tsTiming) - 1)

#define TIMING_SECTOR           NVS_SECTOR5
#define TIMING_BASE             NVS_BASE_SECTOR5
#define TIMING_END              (NVS_BASE_SECTOR5 + TIMING_MAX_NUM*TIMING_MAX_NVS_DATA_SIZE)
#define TIMING_OFFSET           NVS_OFFSET_SECTOR5


#define APP_BACKUP_SECTOR        NVS_SECTOR6             /*  备用块*/
#define APP_BACKUP_BASE          NVS_BASE_SECTOR6        /*  备用基地址 */
#define APP_BACKUP_END           (NVS_BASE_SECTOR6 + NVS_SECTOR_SIZE)         /*  备用结束地址 */
#define APP_BACKUP_OFFSET        NVS_OFFSET_SECTOR6      /* 备用偏移地址 */



extern void vDeviceTimestampRunning(void);	//设备时间戳运行
extern uint32_t uiGetDeviceTimestamp(void);	//获取设备时间戳
extern void vTimeSync(uint32_t uiNtp);		//同步时间戳
extern void vGetTime(tsTime *ptTime, uint32_t uiNtpTime);//获取当前时间

#endif /* APP_APPRTC_H_ */
